package leetcode_900;

/**
 *@author 周杨
 *LongestMountainInArray_845 一个数组的子数组 如果是先递增再递减 那么我们称其为山峰数组 问数组里最长的山峰数组
 *describe:遍历即可 注意A[i]==A[i+1]情况 AC 67%
 *2018年11月2日 下午8:54:29
 */
public class LongestMountainInArray_845 {
	public static void main(String[] args) {
		LongestMountainInArray_845 test=new LongestMountainInArray_845();
		System.out.println(test.longestMountain(new int[] {2,3,3,2,0,2}));
	}
	
	public int longestMountain(int[] A) {
		if(A.length<3)
			return 0;
        int res=0;
        int i=0;
        while(i<A.length-1) {
        	if(A[i]<A[i+1])
        		break;
        	++i;
        }
        while(i<A.length-1) {
        	int j=i;
        	if(A[j]>=A[j+1]) {//这是为了避免进来的时候出现递减或者相等的情况
        		++i;
        		continue;
        	}
        	while(j<A.length-1&&A[j]<A[j+1]) ++j;//只有递增的时候才会加j
        	if(j==A.length-1)
        		return res;
        	if(A[j]==A[j+1]) {//山峰不完整
        		i=j+1;
        		continue;
        	}
        		
        	while(j<A.length-1&&A[j]>A[j+1]) ++j;
        	res=Math.max(res, j-i+1);
        	i=j;
        }
        return res;
    }
}
